package 链表题.根据值删除节点;

import 链表题.ListNode;

/**
 * 方法二: 递归
 */
public class Test2 {

    /**
     * 方法二: 递归
     * @param p 链表头
     * @param val 目标值
     * @return 删除后的链表头
     */
    public static ListNode removeElements(ListNode p, int val) {
        if (p == null) {
            return null;
        }
        if (p.val == val) {
            return removeElements(p.next, val);
        } else {
            p.next = removeElements(p.next, val);
            return p;
        }
    }



    public static void main(String[] args) {
        ListNode o5 = new ListNode(5,null);
        ListNode o4 = new ListNode(4,o5);
        ListNode o3 = new ListNode(3,o4);
        ListNode o2 = new ListNode(2,o3);
        ListNode o1 = new ListNode(1,o2);
        ListNode o7 = new ListNode(3,o1);
        ListNode o8 = new ListNode(10,o7);
        ListNode o = new ListNode(3,o8);
        System.out.println(o);
        System.out.println(removeElements(o, 3));
        System.out.println(o);
    }
}
